home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Plus 1995 #5 & #6
/
Amiga Plus CD - 1995 - No. 5 and 6.iso
/
pd
/
serien
/
purity
/
nr.26
/
druckyv2.4
/
druckyv2.4.p
< prev
next >
Wrap
Text File
|
1995-04-23
|
20KB
|
688 lines
Program printV2_4;
{ Druckeransteuerungsprogramm }
{ Sprache: Kickpascal V1.05,V2.10 & 2.12 von Maxon Computer }
{ Programmierer: Michael Klein }
{ Am Wasserturm 6 }
{ 67346 Speyer }
{ }
{ Programmiert vom 10.04.91 bis zum 06.02.1994 }
FROM mytools USES filereq;
FROM mytools USES mousepos;
USES graphics;
{$ include 'exec.lib',
'Workbench/icon.h',
'dos.lib',
'Workbench/startup.h',
'icon.lib' }
CONST max=256;
version='$VER ROGERDAT Version 2.4 Rev.20 DATE 27.2.94 17.46';
VAR Win,win2: p_window;STATIC;
gadhilf:INTEGER;STATIC;
gad1,gad2,gad3,gad4,gad5:gadget;STATIC;
AktGad:^Gadget;STATIC;
ende,ende2,beenden2:BOOLEAN;
msg,msg2:^INTUIMESSAGE;STATIC;
titel,Undobuffer:STRING100;STATIC;
pfad,name:STRING100;STATIC;
fullpath:STRING[200];STATIC;
Textinfo:Stringinfo;STATIC;
t,LST:TEXT;STATIC;
s,s2:STRING[max];STATIC;
i:LONG;STATIC;
b:CHAR;STATIC;
text1,text3,text4,text5:INTUITEXT;STATIC;
gadget1,gadget2,gadget3:GADGET;STATIC;
itext1,itext2,itext3:INTUITEXT;STATIC;
aktuellgad:^GADGET;STATIC;
qual,j,yp,druckyx,druckyy:INTEGER;STATIC;
line:Long;STATIC;
mausan,ok:BOOLEAN;STATIC;
l,lauf:LONG;STATIC;
tatt:p_textattr;STATIC;
txtattr:textattr;
PROCEDURE UniPrint(VAR win:p_Window; txt:STRING; c1,c2,x,y:INTEGER; shadow,
center : BOOLEAN; tattr:p_TextAttr);
VAR
it,it1 : IntuiText;
l : LONG;
BEGIN
it := IntuiText(c1,0,JAM1,1,1,tattr,txt,^it1);
it1 := IntuiText(c2,0,JAM1,0,0,tattr,txt,NIL);
l := IntuiTextLength(^it)+1;
IF center THEN x := (win^.Width-l) DIV 2;
IF shadow THEN PrintIText(win^.RPort,^it,x,y)
ELSE PrintIText(win^.RPort,^it1,x,y);
END;
PROCEDURE umrandung(wo:p_window,c1,c2,x,y,b,h:INTEGER);
TYPE
umrandungstyp=ARRAY[0..9] OF INTEGER;
VAR
Feld1,feld2:umrandungstyp;
border1,border2:BORDER;
BEGIN
feld1:=umrandungstyp(1,1,1,h-2,0,h-1,0,0,b-2,0);
feld2:=umrandungstyp(b-2,h-2,b-2,1,b-1,0,b-1,h-1,1,h-1);
Border1:=Border(x,y,c1,0,0,5,^Feld1,^Border2);
Border2:=Border(x,y,c2,0,0,5,^Feld2,Nil);
DrawBorder(wo^.rport,^Border1,0,0);
END;
PROCEDURE gbord(wo:p_window,was:p_gadget);
BEGIN
umrandung(wo,2,1,was^.Leftedge,was^.Topedge,was^.Width,was^.height);
END;
PROCEDURE newuline(wo:p_window,was:p_gadget,c:CHAR);
VAR
it:intuitext;STATIC;
x,y:LONG;STATIC;
stelle:INTEGER;
BEGIN
IF was^.Gadgettext<> NIL THEN
BEGIN
stelle:=POS(c,was^.gadgettext^.itext);
If stelle>0 THEN
BEGIN
stelle:=stelle-1;
x:=was^.Gadgettext^.leftedge+was^.Leftedge+8*stelle;
y:=was^.Gadgettext^.topedge+was^.Topedge+1;
it:=INTUITEXT(1,0,0,0,0,tatt,'_',NIL );
PRINTITEXT(wo^.rport,^it,x,y);
END;
END;
END;
PROCEDURE newgbu(wo:p_window,was:p_gadget,c:CHAR);
BEGIN
gbord(wo,was);
newuline(wo,was,c);
END;
PROCEDURE hole_wbkram; { sehr interessant ! 8-þ }
TYPE argarraytyp=^ARRAY[1..MaxInt] OF WBarg;
VAR WBmsgPtr : p_WBStartup;
p_argarray : argarraytyp;
hilfstr : STRING[80];
dobj : p_diskObject;
hilfi : INTEGER;
vlock : BPTR;
FUNCTION OpenIconLib:BOOLEAN;
BEGIN
IconBase:=NIL;
Iconbase:=OpenLibrary(ICONNAME,0);
IF IconBase=NIL THEN OpenIconLib:=FALSE ELSE OpenIconLib:=TRUE;
END;
PROCEDURE CloseIconLib;
BEGIN
IF IconBase<>NIL THEN CloseLibrary(IconBase);
IconBase:=NIL;
END;
BEGIN
IF OpenIconLib THEN
BEGIN
WBmsgPtr:=StartupMessage;
p_argarray:=argarraytyp(wbmsgptr^.sm_ArgList);
Vlock:=currentdir(p_argarray^[1].wa_lock);
dobj:=Getdiskobject(p_argarray^[1].wa_Name);
IF (dobj<>NIL) THEN
BEGIN
hilfstr:=Findtooltype(dobj^.do_Tooltypes,'XCOORD');
IF hilfstr<>'' THEN
BEGIN
VAL(hilfstr,druckyx,hilfi);
IF hilfi<>0 THEN druckyx:=90;
END;
hilfstr:=Findtooltype(dobj^.do_Tooltypes,'YCOORD');
IF hilfstr<>'' THEN
BEGIN
VAL(hilfstr,druckyy,hilfi);
IF hilfi<>0 THEN druckyy:=46;
END;
hilfstr:=Findtooltype(dobj^.do_Tooltypes,'PFAD');
IF hilfstr<>'' THEN pfad:=hilfstr;
hilfstr:=Findtooltype(dobj^.do_Tooltypes,'MOUSEMOVE');
IF hilfstr='ON' THEN mausan:=TRUE;
FreeDiskObject(dobj);
END;
IF (WBMsgPtr^.sm_NumArgs>1) THEN
BEGIN
pfad:='';
name:=p_argarray^[2].wa_Name;
Vlock:=currentdir(p_argarray^[2].wa_lock);
END;
END;
CloseIconLib;
END;
PROCEDURE meldung(was:STR);
BEGIN
setwindowtitles(win,str(-1),was);
END;
FUNCTION druckerok:BOOLEAN; { Thanks to Diesel ! }
CONST
PRA = $BFD000; { * Basis-Addresse CIA-B * }
TYPE
BytePtr = ^Byte;
VAR
CIA_Byte : BytePtr;
CIA_Data : Byte;
BEGIN
CIA_Byte := ptr(PRA);
CIA_Data := ( CIA_Byte^ ) MOD 4 ;
druckerok:=FALSE;
CASE CIA_Data OF
3 : meldung("Der Drucker ist entweder aus oder offline und hat kein Papier mehr.");
1 : meldung("Der Drucker ist offline.");
2 : meldung("Der Drucker hat kein Papier mehr.");
0 : druckerok:=TRUE;
END;
END;
PROCEDURE refresh;
BEGIN
Umrandung(win,1,2,97,16+yp,254,13); {2 Umrandungen für stringgad }
Umrandung(win,2,1,95,15+yp,258,15);
newgbu(win,^gad1,'F');
newgbu(win,^gad3,'A');
newgbu(win,^gad4,'I');
newgbu(win,^gad5,'D');
END;
FUNCTION abfrage(Abfragetitel:STR):BOOLEAN;
BEGIN
ok:=ModifyIDCMP(win,0);
win2:=open_window(184,105,272,45+yp,$0201,GADGETUP+GADGETDOWN+VANILLAKEY,
ACTIVATE,abfragetitel,NIL,640,256,640,256);
uniprint(win2,'Wollen Sie das wirklich ???',1,2,30,15+yp,TRUE,FALSE,tatt);
Umrandung(win2,1,2,6,12+yp,260,14);
gadget1:=Gadget (^gadget2,6,27+yp,130,15,GADGHCOMP,RELVERIFY,
BOOLGADGET,NIL,NIL,^itext1,0,NIL,13,NIL);
itext1:=INTUITEXT(1,0,0,25,3,tatt,'Ja (Return)',NIL);
newgbu(win2,^gadget1,'J');
gadget2:=Gadget (NIL,136,27+yp,130,15,GADGHCOMP,
RELVERIFY,BOOLGADGET,NIL,NIL,^itext2,0,NIL,14,NIL);
itext2:=INTUITEXT(1,0,0,15,3,tatt,'Nein (Escape)',NIL);
newgbu(win2,^gadget2,'N');
gadhilf:=ADDGLIST(win2,^gadget1,0,-1,NIL);
REFRESHGLIST(^gadget1,win2,NIL,-1);
beenden2:=FALSE;
IF mausan THEN
BEGIN
IF OpenmouseposInput=TRUE THEN Positionmouse(80,33+yp,win2);
Closemouseposinput;
END;
REPEAT
msg2:=wait_port(win2^.Userport);
msg2:=GET_MSG(win2^.USERPORT);
CASE MSG2^.CLASS OF
VANILLAKEY:
CASE msg2^.code OF
106,74,13:
BEGIN
abfrage:=TRUE;{j,J,CR}
beenden2:=TRUE;
END
OTHERWISE
BEGIN
abfrage:=FALSE;
beenden2:=TRUE;
END;
END;
GADGETUP:
BEGIN
AktuellGad:=Msg2^.IAddress;
Case AktuellGad^.GadgetID Of
13: BEGIN
abfrage:=TRUE;
beenden2:=TRUE;
END;
14: BEGIN
abfrage:=FALSE;
beenden2:=TRUE;
END;
OTHERWISE;
END;
END
ELSE;
END; {OF CASE}
reply_msg(msg2);
UNTIL beenden2;
gadhilf:=REMOVEGLIST(win2,^gadget1,-1);
close_window(win2);
ok:=ModifyIDCMP(win,VANILLAKEY+_CLOSEWINDOW+GADGETUP+GADGETDOWN);
END;
PROCEDURE lesen;
PROCEDURE hcls;
BEGIN
SetApen(win2^.rport,0);
Rectfill(win2^.rport,0,0,640,240);
END;
PROCEDURE vorwaerts;
BEGIN
IF eof(t) THEN displaybeep(NIL)
ELSE
BEGIN
hcls;
j:=8;
WHILE (NOT (eof(t)) AND (j<230)) DO
BEGIN
inc(line);
read(t,s);
uniprint(win2,s,1,2,0,j,TRUE,FALSE,tatt);
j:=j+10;
END;
END; {OF else}
END;
PROCEDURE zurueck;
VAR springer:LONG;
BEGIN
j:=8;
IF (line>23) THEN
BEGIN
Seek(t,0); { An Dateianfang }
line:=line-46;
IF line<0 THEN line:=0;
FOR springer:=1 TO line DO read(t,s);
hcls;
WHILE (NOT (eof(t)) AND (j<230)) DO
BEGIN
inc(line);
read(t,s);
uniprint(win2,s,1,2,0,j,TRUE,FALSE,tatt);
j:=j+10;
END;
END ELSE Displaybeep(NIL); {Dateianfang}
END;
BEGIN
meldung('');
fullpath:=pfad+name;
RESET(t,fullpath);
IF (IORESULT<>0) THEN
BEGIN
displaybeep(NIL); {Datei nicht vorhanden !!!}
meldung('FEHLER: Datei nicht vorhanden');
exit;
END
ELSE
BEGIN
buffer(t,10000);
j:=8;
line:=0;
beenden2:=FALSE;
win2:=open_window(0,0,640,256,$0201,GADGETUP+GADGETDOWN+RAWKEY,
BORDERLESS+ACTIVATE,'',NIL,640,256,640,256);
hcls;
gadget1:=Gadget (^gadget2,2,241,212,15,GADGHCOMP,RELVERIFY,
BOOLGADGET,NIL,NIL,^itext1,0,NIL,13,NIL);
itext1:=INTUITEXT(1,0,0,15,3,tatt,'Vorwärts (Cursor Down)',NIL);
newgbu(win2,^gadget1,'V');
gadget2:=Gadget (^gadget3,214,241,212,15,GADGHCOMP,
RELVERIFY,BOOLGADGET,NIL,NIL,^itext2,0,NIL,14,NIL);
itext2:=INTUITEXT(1,0,0,25,3,tatt,'Rückwärts (Cursor up)',NIL);
newgbu(win2,^gadget2,'R');
gadget3:=Gadget (NIL,426,241,212,15,GADGHCOMP,RELVERIFY,
BOOLGADGET,NIL,NIL,^itext3,0,NIL,15,NIL);
itext3:=INTUITEXT(1,0,0,45,3,tatt,'Hauptmenü (Esc)',NIL);
newgbu(win2,^gadget3,'H');
gadhilf:=ADDGLIST(win2,^gadget1,0,-1,NIL);
REFRESHGLIST(^gadget1,win2,NIL,-1);
WHILE (NOT eof(t) AND (j<230)) DO
BEGIN
inc(line);
read(t,s);
uniprint(win2,s,1,2,0,j,TRUE,FALSE,tatt);
j:=j+10;
END;
REPEAT
msg2:=wait_port(win2^.Userport);
msg2:=GET_MSG(win2^.USERPORT);
qual:=msg2^.qualifier;
CASE MSG2^.CLASS OF
RAWKEY:
BEGIN
IF qual= -32768 THEN
CASE msg2^.code OF
52,64,77,68:vorwaerts; {v,CURSOR-down,Space,CR}
76,19:zurueck;{ Cursor-up, R}
69,37:beenden2:=TRUE { Esc,H }
OTHERWISE END;
END;
GADGETUP:
BEGIN
AktuellGad:=Msg2^.IAddress;
Case AktuellGad^.GadgetID Of
13: vorwaerts;
14: zurueck;
15: beenden2:=TRUE;
OTHERWISE;
END;
END
ELSE;
END; {OF CASE}
reply_msg(msg2);
UNTIL beenden2;
close(t);
END; {OF ELSE}
gadhilf:=REMOVEGLIST(win2,^gadget1,-1);
close_window(win2);
END;
PROCEDURE rinfo;
VAR win3:p_window;
gad12:GADGET;
text12c:INTUITEXT;
msg3:^INTUIMESSAGE;
BEGIN
ok:=ModifyIDCMP(win,0);
meldung('');
win3:=open_window(90,46,450,175+yp,$0201,GADGETUP+GADGETDOWN+VANILLAKEY,
ACTIVATE,' Drucky V2.4 INFOFENSTER',NIL,640,256,640,256);
gad12:=GADGET(NIL,0,0,450,175+yp,GADghnone,GADGIMMEDIATE,BOOLGADGET,
NIL,NIL,NIL,0,NIL,14,NIL);
uniprint(win3,'DRUCKY V2.4 ist Public Domain',2,1,0,15+yp,TRUE,TRUE,tatt);
uniprint(win3,'Du kannst es also benutzen, kopieren, verändern ...',1,2,0,25+yp,TRUE,TRUE,tatt);
uniprint(win3,'Allerdings muß erwähnt werden, daß die Originalversion',1,2,0,35+yp,TRUE,TRUE,tatt);
uniprint(win3,'von mir stammt und es muß meine Adresse mit drinstehen',1,2,0,45+yp,TRUE,TRUE,tatt);
uniprint(win3,'mit dem Aufruf, mir eigene Pascalprogramme und',1,2,0,55+yp,TRUE,TRUE,tatt);
uniprint(win3,'Sourcecodes zu schicken.',1,2,0,65+yp,TRUE,TRUE,tatt);
uniprint(win3,'Wenn Du Vorschläge zur Verbesserung hast, schicke doch',1,2,0,75+yp,TRUE,TRUE,tatt);
uniprint(win3,'einfach eine Diskette mit Routinen oder auch anderen',1,2,0,85+yp,TRUE,TRUE,tatt);
uniprint(win3,'eigenen Pascal oder PD Programmen/Sourcecodes an:',1,2,0,95+yp,TRUE,TRUE,tatt);
uniprint(win3,' Røgersøft',3,2,8,107+yp,TRUE,FALSE,tatt);
uniprint(win3,' Michael Klein',3,2,8,117+yp,TRUE,FALSE,tatt);
uniprint(win3,' Am Wasserturm 6',3,2,8,127+yp,TRUE,FALSE,tatt);
uniprint(win3,' GERMANY 67346 Speyer',3,2,8,137+yp,TRUE,FALSE,tatt);
uniprint(win3,'Erstellt mit KICK-Pascal V2.1 von MAXON Computer',1,2,8,150+yp,TRUE,TRUE,tatt);
uniprint(win3,'Besonderen Dank an Bombersoft und Diesel !',1,3,0,160+yp,TRUE,TRUE,tatt);
gadhilf:=ADDGADGET(win3,^GAD12,0);
REFRESHGADGETS(win3^.firstgadget,win3,NIL);
msg3:=Wait_port(Win3^.Userport);
msg3:=get_msg(win3^.userport);
reply_msg(msg3);
close_window(win3);
ok:=ModifyIDCMP(win,VANILLAKEY+_CLOSEWINDOW+GADGETUP+GADGETDOWN);
END;
PROCEDURE pbalken(max,zaehler:LONG);
Var hilfstring:STRING[6];
y2:LONG;
zprozent,z1,z2:INTEGER;
einprozent:REAL;
BEGIN
setapen(win2^.rport,3);
zprozent:=round(zaehler/(max/100));
y2:=17+(zprozent SHL 2);
rectfill(win2^.rport,17,16+yp,y2,33+yp);
setapen(win2^.rport,1);
Move(win2^.rport,210,45+yp);
hilfstring:=intstr(zprozent);
hilfstring:=hilfstring+' %';
l:=_text(win2^.rport,hilfstring,Length(hilfstring));
END;
PROCEDURE oeffne_Fenster;
BEGIN
win2:=Open_Window(110,80,430,52+yp,$0201,_Closewindow,Windowclose+WINDOWDRAG+WINDOWDEPTH,
'Drucky V2.4: Text drucken',NIL,0,0,640,255);
umrandung(win2,2,1,15,15+yp,404,20);
IF mausan THEN
BEGIN
IF OpenmouseposInput=TRUE THEN Positionmouse(10,5,win2);
Closemouseposinput;
END;
END;
PROCEDURE schliesse_Fenster;
BEGIN
IF win2<>NIL THEN close_window(win2);
END;
PROCEDURE druck;
VAR groesse,Position,anf:LONG;
zeilenlaenge:INTEGER;
BEGIN
assign(LST,'prt:');
rewrite(LST);
groesse:=filesize(t); { Dateigröße feststellen}
Position:=0;
msg2:=NIL;
oeffne_Fenster;
WHILE NOT eof(t) DO
BEGIN
readln(t,s);
zeilenlaenge:=length(s);
Position:=position+zeilenlaenge;
inc(position);
anf:=pos('§',s);
IF anf<>0 THEN
BEGIN
write(lst,Copy(s,1,anf-1));
FOR i:=anf TO zeilenlaenge DO
BEGIN { Stringbearbeitung }
IF s[i]='§' THEN
BEGIN {SONDERZEICHENBEARBEITUNG}
inc(i);
b:=s[i];
inc(i);
CASE b OF
'K' : write(lst,CHR(27),'[3m'); { kursiv ein }
'k' : write(lst,CHR(27),'[23m'); { kursiv aus }
'U' : write(lst,CHR(27),'[4m'); { unterstreichen ein }
'u' : write(lst,CHR(27),'[24m'); { unterstreichen aus }
'F' : write(lst,CHR(27),'[1m'); { Fettschrift ein }
'f' : write(lst,CHR(27),'[22m'); { Fettschrift aus }
'E' : write(lst,CHR(27),'[2w'); { Elite ein }
'e' : write(lst,CHR(27),'[1w'); { Elite aus }
'C' : write(lst,CHR(27),'[4w'); { Condensed ein }
'c' : write(lst,CHR(27),'[3w'); { Condensed aus }
'B' : write(lst,CHR(27),'[6w'); { Breitschrift ein }
'b' : write(lst,CHR(27),'[5w'); { Breitschrift aus }
'S' : write(lst,CHR(27),'[6"z'); { Schattenschrift ein }
's' : write(lst,CHR(27),'[5"z'); { Schattenschrift aus }
'N' : write(lst,CHR(27),'[2"z'); { NLQ ein }
'n' : write(lst,CHR(27),'[1"z'); { NLQ aus }
'H' : write(lst,CHR(27),'[2v'); { hochsetzen ein }
'h' : write(lst,CHR(27),'[1v'); { hochsetzen aus }
'T' : write(lst,CHR(27),'[4v'); { tiefsetzen ein }
't' : write(lst,CHR(27),'[3v'); { tiefsetzen aus }
ELSE
END; { OF CASE }
END; { OF SONDERZEICHEN }
IF (s[i]<>'§') AND (i<length(s)+1) THEN write(LST,s[i]) ELSE dec(i);
END; {OF STRINGBEARBEITUNG}
write(lst,chr(10));
END
ELSE writeln(lst,s);
pbalken(groesse,position);
IF msg2=NIL THEN msg2:=get_msg(win2^.Userport)
ELSE
IF msg2^.class=_CloseWindow THEN
BEGIN
close(lst);
close(t);
Reply_Msg(Msg2);
schliesse_Fenster;
exit;
END
ELSE
Reply_Msg(Msg2);
END; {OF WHILE}
close(lst);
close(t);
schliesse_Fenster;
END; {OF DRUCK}
PROCEDURE drucken;
BEGIN
ok:=ModifyIDCMP(win,0);
fullpath:=pfad+name;
RESET(t,fullpath);
IF (ioresult=0) THEN
BEGIN
IF druckerok THEN
BEGIN
buffer(t,10000);
druck;
meldung('MELDUNG: DRUCKEN BEENDET');
END ELSE close(t);
END
ELSE
BEGIN
meldung('FEHLER: Datei nicht vorhanden');
END;
ok:=ModifyIDCMP(win,VANILLAKEY+_CLOSEWINDOW+GADGETUP+GADGETDOWN);
END;
PROCEDURE requester;
BEGIN
meldung('');
IF req('Drucky V2.4: Datei auswählen',name,pfad,win)
THEN
BEGIN
fullpath:=pfad+name;
refreshgadgets(^gad2,win,NIL);
END;
END;
PROCEDURE hauptprogramm;
BEGIN
druckyx:=90;
druckyy:=46;
mausan:=FALSE;
pfad:='';
name:='';
IF FromWB THEN hole_wbkram;
fullpath:=name;
Undobuffer:='';
txtattr:=Textattr('topaz.font',8,0,0);
tatt:=^txtattr;
Win:=open_window(0,0,1,1,1,0,0,NIL,NIL,0,0,0,0);
yp:=win^.WScreen^.font^.ta_Ysize-8;
close_window(win);
Win:=Open_Window(druckyx,druckyy,364,50+yp,$0201,VANILLAKEY+_CLOSEWINDOW+GADGETUP+GADGETDOWN,
WINDOWDRAG+WINDOWDEPTH+WINDOWCLOSE+ACTIVATE,
'Drucky V2.4 Final Version - PD -',Nil,640,255,640,255);
gad1:=Gadget(^gad2,10,15+yp,85,15,GADGHCOMP,RELVERIFY,BOOLGADGET,
NIL,NIL,^text1,0,NIL,1,NIL);
gad2:=Gadget(^gad3,100,19+yp,248,8,GADGHCOMP,RELVERIFY,
STRGADGET,NIL,NIL,NIL,0,^Textinfo,2,NIL);
gad3:=Gadget(^gad4,10,30+yp,120,15,GADGHCOMP,RELVERIFY,BOOLGADGET,
NIL,NIL,^text3,0,NIL,3,NIL);
gad4:=Gadget(^gad5,130,30+yp,103,15,GADGHCOMP,RELVERIFY,BOOLGADGET,
NIL,NIL,^text4,0,NIL,4,NIL);
gad5:=Gadget(NIL,233,30+yp,120,15,GADGHCOMP,RELVERIFY,BOOLGADGET,
NIL,NIL,^text5,0,NIL,5,NIL);
text1:=INTUITEXT(1,0,0,12,3,tatt,'Filename',NIL);
text3:=INTUITEXT(1,0,0,30,3,tatt,'Anzeigen',NIL);
text4:=INTUITEXT(1,0,0,35,3,tatt,'Info',NIL);
text5:=INTUITEXT(1,0,0,35,3,tatt,'Drucken',NIL);
gadhilf:=ADDGLIST(win,^gad1,0,-1,NIL);
Textinfo:=Stringinfo(^fullpath,^Undobuffer,0,80,0,0,0,0,0,0,NIL,0,NIL);
refresh; { Border für Gadgets zeichnen }
REFRESHGLIST(^gad1,Win,NIL,-1);
Ende:=FALSE;
REPEAT
Msg:=Wait_Port(Win^.UserPort);
Msg:=Get_Msg(Win^.UserPort);
Case Msg^.Class Of
_CLOSEWINDOW: IF abfrage('Drucky V2.4 beenden ?')
THEN ende:=TRUE;
GADGETUP,GADGETDOWN:
Begin
AktGad:=Msg^.IAddress;
Case AktGad^.GadgetID Of
1: Requester;
2: BEGIN
pfad:='';
name:=fullpath;
END;
3: lesen;
4: rinfo;
5: drucken;
Otherwise;
End { inneres CASE }
End;
VANILLAKEY:
CASE msg^.code OF
102,70:OK:=activategadget(^gad2,win,NIL);
97,65:lesen;
105,73:rinfo;
27,113,81: IF abfrage('Drucky V2.4 beenden ?')
THEN ende:=TRUE;
114,82:Requester; {r,R}
100,68: drucken
OTHERWISE;
END;
Otherwise;
End; { inneres CASE }
Reply_Msg(Msg);
UNTIL Ende;
gadhilf:=REMOVEGLIST(win,^gad1,-1);
Close_Window(Win);
END;
PROCEDURE vom_cli;
Begin
fullpath:=parameterstr;
fullpath[parameterlen]:=chr(0);
IF fullpath='' THEN hauptprogramm
ELSE
BEGIN
RESET(t,fullpath);
IF (ioresult<>0) THEN
BEGIN
writeln('SORRY !!! Datei nicht vorhanden !!!');
END
ELSE
druck;
END;
END;
{*********************** MAIN *****************}
BEGIN
If fromwb THEN hauptprogramm
ELSE vom_CLI;
END.